package com.lcc.lynx.security.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

/**
 * 安全配置属性
 *
 * @author lcc
 * @date 2023-10-14 14:15
 */
@Data
@Component
@ConfigurationProperties(prefix = SecurityProperties.PROPERTIES_PREFIX)
public class SecurityProperties extends RootProperties {

    public static final String PROPERTIES_PREFIX = ROOT_PREFIX + ".security";

    /**
     * 凭据有效时长（单位:分钟）
     */
    private int tokenExpire = 30;

    /**
     * 凭据自动刷新时长（单位:分钟）
     */
    private int tokenRefresh = 10;

    /**
     * md5盐值
     */
    private String md5Key;
    /**
     * 默认密码
     */
    private String defaultPassword = "123456";
    /**
     * 密码强度校验正则
     */
    private String passwordRegex = "^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[\\W_]).{8,20}$";
    /**
     * 密码正则错误提示
     */
    private String passwordRegexMsg = "密码格式错误，必须包含数字、字母、特殊字符，长度在8-20位之间";
    /**
     * rsa私钥
     */
    private String privateKey;
    /**
     * rsa公钥
     */
    private String publicKey;
    /**
     * dev，prod
     * */
    private String env;

    /**
     * 是否开启权限控制
     */
    private boolean openPermission;

    /**
     * 允许的地址清单
     */
    private List<String> permitAll = new ArrayList<>();
}
